import { namespaceMap } from "../util";

// 创建一个带命名空间的元素
export function createElementNS(namespace, tagName){
    return document.createElementNS(namespaceMap[namespace],tagName)
}

// 创建元素节点
export function createElement(tagName, vnode){
    const elm = document.createElement(tagName)
    if(tagName !== 'select'){
        return elm
    }
    // false or null will remove the attribute but undefined will not
    // false或者null会移除属性，但undefined不会
    // select标签上定义属性multiple是，取到的值是undefined
    if(vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined){
        elm.setAttribute('multiple', 'multiple');
    }
}

// 创建注释节点
export function createComment(text){
    return document.createComment(text);
}

// 将一个节点插入到参考节点之前
export function insertBefore (parentNode, newNode, referenceNode) {
    parentNode.insertBefore(newNode, referenceNode)
}

// 创建文本节点
export function createTextNode(text){
    return document.createTextNode(text);
}

// 获取元素的父节点
export function parentNode(node){
    return node.parentNode
}

// 删除一个节点
export function removeChild(node,child){
    node.removeChild(child);
}

// 追加一个节点
export function appendChild (node, child) {
    node.appendChild(child)
  }

// 返回下一个兄弟节点
export function nextSibling (node) {
    return node.nextSibling
}

// 返回节点的名字
export function tagName (node) {
    return node.tagName
}

// 返回节点的文本
export function setTextContent (node, text) {
    node.textContent = text
}
 
// 设置节点的scopeId ？？？？？？？？？？？？？？？？？ 
export function setStyleScope (node, scopeId) {
    node.setAttribute(scopeId, '')
}
